Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-PJL-003 |
| Deskripsi | Penjualan aset perusahaan kepada customer: memilih aset dari batch masuk aset (Master Aset, bukan Master Barang), menentukan harga, PPN, dan metode pembayaran, lalu mengelola status draft/final invoice |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar invoice penjualan aset (tanggal, nomor invoice, customer, jatuh tempo, total, tagihan, keterangan, status)
- User memfilter daftar berdasarkan nomor invoice, tanggal invoice, jatuh tempo, customer, status selesai / belum selesai, dan status lunas
- User membuat penjualan aset: tanggal, customer, cabang, lokasi, cluster, tempo, faktur pajak, PPN keluaran, keterangan, baris aset dari batch masuk aset, dan metode pembayaran
- User membuat penjualan aset atas afkir (khusus hak afkir)
- User mengubah invoice penjualan aset yang masih draft
- User melihat detail dan mencetak invoice penjualan aset
- User mengembalikan invoice final ke draft, menghapus invoice draft, dan membuat pembayaran piutang dari invoice yang belum lunas
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar invoice penjualan aset dengan kolom tanggal, nomor invoice, customer, jatuh tempo, total, tagihan, keterangan, dan status |
| FR-02 | User dapat memfilter daftar berdasarkan nomor invoice, tanggal invoice, jatuh tempo, customer, status, dan lunas |
| FR-03 | User dapat membuat penjualan aset dengan baris aset yang dipilih dari batch masuk aset beserta qty, harga, diskon, PPN, dan keterangan |
| FR-04 | Qty jual per baris tidak boleh melebihi sisa qty batch aset |
| FR-05 | User dapat menyimpan penjualan aset sebagai draft atau final, dengan metode pembayaran untuk tempo 0 |
| FR-06 | User dapat mengubah invoice penjualan aset draft |
| FR-07 | User dapat melihat detail dan mencetak invoice penjualan aset |
| FR-08 | User dengan hak draft dapat unlock invoice final ke draft dan menghapus invoice draft |
| FR-09 | User dapat membuat pembayaran piutang dari invoice penjualan aset final yang belum lunas |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat dan memfilter daftar penjualan aset |
| UC-02 | Membuat penjualan aset |
| UC-03 | Memilih aset dari batch masuk aset |
| UC-04 | Mengubah penjualan aset draft |
| UC-05 | Melihat detail dan mencetak invoice penjualan aset |
| UC-06 | Membuka kembali (unlock) invoice penjualan aset ke draft |
| UC-07 | Menghapus invoice penjualan aset draft |
| UC-08 | Membuat pembayaran piutang dari penjualan aset |
4. Use Case Scenario
UC-01 : Melihat dan memfilter daftar penjualan aset
| Aktor | User dengan hak lihat penjualan aset |
| Deskripsi | User melihat daftar invoice penjualan aset dan menyaringnya |
| Prekondisi | User sudah login Brand aktif |
| Alur utama | 1. User membuka menu Penjualan Aset. 2. Sistem menampilkan daftar invoice penjualan aset. 3. User mencari nomor invoice atau memilih filter tanggal invoice, jatuh tempo, customer, status, dan lunas. 4. Sistem memuat ulang daftar sesuai filter. |
| Alur negatif | - Jika tidak ada data, tampil keadaan daftar kosong. - Jika gagal memuat, daftar kosong. |
| Bisnis rule | - Tanpa hak lihat semua (#penjualan-aset all), daftar dibatasi invoice user sendiri.- User non admin dengan batasan cabang hanya melihat invoice di cabang yang diizinkan. - Status selesai = final, belum selesai = draft. |
| Postkondisi | Daftar tampil sesuai filter |
| Trigger | User membuka menu / mengubah filter |
| Kode FR | FR-01 FR-02 |
UC-02 : Membuat penjualan aset
| Aktor | User dengan hak tambah penjualan aset |
| Deskripsi | User mencatat penjualan aset kepada customer |
| Prekondisi | User memiliki hak #penjualan-aset basicAda batch aset masuk dengan sisa qty |
| Alur utama | 1. User klik Buat Invoice (atau Buat atas Afkir). 2. User mengisi tanggal, customer, cabang, lokasi, cluster, tempo pembayaran, nomor faktur pajak, PPN keluaran, dan keterangan nota. 3. User menambah baris aset (lihat UC-03), mengisi qty, harga, diskon, PPN, dan keterangan. 4. User mengisi metode pembayaran bila tempo 0. 5. User klik Simpan Draft atau Simpan Final, lalu konfirmasi untuk final. 6. Sistem membuat invoice penjualan aset. |
| Alur negatif | - Jika form belum valid, muncul "Tolong lengkapi form dengan benar!". - Jika cabang kosong, muncul "Tolong lengkapi gudang form dengan benar!". - Jika customer melewati batas jumlah nota / piutang saat final bertempo, muncul peringatan "Customer Tersebut telah mencapai batas ...". - Jika mode multi cabang dan cabang baris kosong, muncul "Tolong lengkapi gudang rincian dengan benar!". - Jika tempo 0 dan metode pembayaran tidak valid, muncul "Metode Pembayaran Harus Diisi". |
| Bisnis rule | - Aset dipilih dari Master Aset melalui batch masuk aset, bukan dari Master Barang. - Tempo 0 wajib metode pembayaran; titipan DP dapat dipakai sebagai metode. - Penjualan atas afkir menandai invoice atas_afkir dan setiap baris membawa afkir_id.- Tanggal awal aset masuk diambil dari batch paling awal di rincian. |
| Postkondisi | Invoice penjualan aset tersimpan sebagai draft atau final |
| Trigger | User klik Simpan |
| Kode FR | FR-03 FR-05 |
UC-03 : Memilih aset dari batch masuk aset
| Aktor | User dengan hak tambah penjualan aset |
| Deskripsi | User memilih aset yang akan dijual berdasarkan batch pemasukan aset |
| Prekondisi | Form penjualan aset terbuka dan cabang sudah dipilih |
| Alur utama | 1. User membuka pilihan batch masuk aset pada baris rincian. 2. Sistem menampilkan batch aset di cabang terpilih yang masih memiliki sisa qty. 3. User memilih batch. 4. Sistem mengisi nama aset, tanggal perolehan, harga beli per unit, nilai susut, dan qty default sesuai sisa batch. |
| Alur negatif | - Jika qty lebih besar dari sisa batch, muncul "Qty tidak boleh lebih dari qty sisa". - Jika batch atau qty kosong, muncul "Batch Masuk Aset, Qty dan Satuan Tidak Boleh Kosong!". |
| Bisnis rule | - Batch yang tampil hanya batch dengan sisa qty lebih dari 0. - Satu baris mewakili satu batch masuk aset. |
| Postkondisi | Baris aset terisi |
| Trigger | User memilih batch masuk aset |
| Kode FR | FR-03 FR-04 |
UC-04 : Mengubah penjualan aset draft
| Aktor | User dengan hak tambah penjualan aset |
| Deskripsi | User memperbarui invoice penjualan aset yang masih draft |
| Prekondisi | Invoice berstatus draft |
| Alur utama | 1. User memilih Edit. 2. Sistem memuat invoice beserta baris aset. 3. User mengubah data lalu menyimpan draft atau final. 4. Sistem memperbarui invoice. |
| Alur negatif | - Jika invoice tidak ditemukan, user dikembalikan ke daftar. - Validasi form sama seperti pembuatan. |
| Bisnis rule | - Edit hanya tersedia untuk invoice draft. |
| Postkondisi | Invoice penjualan aset terbarui |
| Trigger | User klik Edit lalu Simpan |
| Kode FR | FR-06 |
UC-05 : Melihat detail dan mencetak invoice penjualan aset
| Aktor | User dengan hak lihat penjualan aset |
| Deskripsi | User melihat detail invoice dan mencetak nota |
| Prekondisi | Invoice tersedia |
| Alur utama | 1. User memilih Lihat. 2. Sistem menampilkan informasi invoice, rincian aset, dan pembayaran. 3. User klik Cetak. 4. Sistem menandai invoice tercetak dan menampilkan cetak nota. |
| Alur negatif | - Jika gagal menandai cetak, muncul pesan error dari sistem. |
| Bisnis rule | - Cetak ulang invoice final mengikuti hak reprint. |
| Postkondisi | Nota tercetak |
| Trigger | User klik Lihat / Cetak |
| Kode FR | FR-07 |
UC-06 : Membuka kembali (unlock) invoice penjualan aset ke draft
| Aktor | User dengan hak draft penjualan aset |
| Deskripsi | User mengubah invoice final menjadi draft |
| Prekondisi | Invoice berstatus final |
| Alur utama | 1. User memilih "Ubah ke Simpan Draft" di halaman detail. 2. Sistem mengubah invoice menjadi draft. 3. Muncul "Berhasil Ubah ke Simpan Draft Invoice ...". |
| Alur negatif | - Jika ditolak sistem, muncul pesan error dari sistem. |
| Bisnis rule | - Hanya untuk hak #can-draft dan hak draft #penjualan-aset. |
| Postkondisi | Invoice berstatus draft |
| Trigger | User klik Ubah ke Simpan Draft |
| Kode FR | FR-08 |
UC-07 : Menghapus invoice penjualan aset draft
| Aktor | User dengan hak draft penjualan aset |
| Deskripsi | User menghapus invoice draft |
| Prekondisi | Invoice berstatus draft |
| Alur utama | 1. User memilih Hapus di halaman detail. 2. Sistem menghapus invoice. 3. Muncul "Berhasil Hapus Invoice ..." dan kembali ke daftar. |
| Alur negatif | - Jika gagal, muncul pesan error dari sistem. |
| Bisnis rule | - Hapus hanya untuk invoice draft. |
| Postkondisi | Invoice terhapus |
| Trigger | User klik Hapus |
| Kode FR | FR-08 |
UC-08 : Membuat pembayaran piutang dari penjualan aset
| Aktor | User dengan hak tambah pembayaran piutang |
| Deskripsi | User langsung membuat pembayaran piutang untuk invoice penjualan aset yang belum lunas |
| Prekondisi | Invoice final dan belum lunas User memiliki hak #pembayaran-piutang basic |
| Alur utama | 1. User memilih Buat Pembayaran Piutang di halaman detail. 2. Sistem membuka form pembayaran piutang dengan customer dan invoice terisi. |
| Alur negatif | - Menu tidak tampil bila invoice sudah lunas atau masih draft. |
| Bisnis rule | - Proses pembayaran berlanjut di fitur Pembayaran Piutang (VBS-PJL-004). |
| Postkondisi | Form pembayaran piutang terbuka |
| Trigger | User klik Buat Pembayaran Piutang |
| Kode FR | FR-09 |
5. Data Flow Diagram
DFD-01
6. Sequence Diagram
SD-01 — UC-01 : Melihat dan memfilter daftar penjualan aset
SD-02 — UC-02 : Membuat penjualan aset
SD-03 — UC-03 : Memilih aset dari batch masuk aset
SD-04 — UC-04 : Mengubah penjualan aset draft
SD-05 — UC-05 : Melihat detail dan mencetak invoice penjualan aset
SD-06 — UC-06 : Membuka kembali (unlock) invoice penjualan aset ke draft
SD-07 — UC-07 : Menghapus invoice penjualan aset draft
SD-08 — UC-08 : Membuat pembayaran piutang dari penjualan aset
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-penjualan-aset | existing | - |
GET /invoice-penjualan-aset/:id | existing | - |
PUT /invoice-penjualan-aset/invoice-only/:id | existing | - |
PUT /invoice-penjualan-aset/unlock/:id | existing | - |
DELETE /invoice-penjualan-aset/:id | existing | - |
POST /penjualan-aset | existing | - |
PUT /penjualan-aset/:id | existing | - |
GET /aset-masuk | existing | - |
GET /aset | existing | - |
GET /customer | existing | - |